package duxiaoman.d20211023.t2;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

/**
 * @author habitplus
 * @since 2021-10-23 16:17
 */
public class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] ss = br.readLine().split(" ");
        int m = Integer.parseInt(ss[0]);
        int n = Integer.parseInt(ss[1]);
        int[][] arr = new int[m + n][4];
        String str;
        for (int i = 0; i < m + n; i++) {
            // HH:mm-HH:mm
            str = br.readLine();
            arr[i][0] = (str.charAt(0) - '0') * 10 + (str.charAt(1) - '0');
            arr[i][1] = (str.charAt(3) - '0') * 10 + (str.charAt(4) - '0');
            arr[i][2] = (str.charAt(6) - '0') * 10 + (str.charAt(7) - '0');
            arr[i][3] = (str.charAt(9) - '0') * 10 + (str.charAt(10) - '0');
        }

        // 以结束时间做升序排列，若结束时间相同，再以开始时间做降序排列
        int ans = solve(arr);
        System.out.println(ans);
    }

    private static int solve(int[][] arr) {
        if (arr == null || arr.length == 0) return 0;

        /*
            排序：以结束时间做升序排列，若结束时间相同，再以开始时间做降序排列
            +
            倒序遍历
         */
        int n = arr.length;

        Arrays.sort(arr, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                if (o1[2] != o2[2]) return o1[2] - o2[2];
                if (o1[3] != o2[3]) return o1[3] - o2[3];
                if (o1[0] != o2[0]) return o2[0] - o1[0];
                return o2[1] - o1[1];
            }
        });

        int nxt = n - 1;
        int ans = 1;
        for (int i = n - 2; i >= 0; i--) {
            // 当前节目的结束时间一定要【小于或等于】下一个节目的开始时间
            if (cmp(arr[i][2], arr[i][3], arr[nxt][0], arr[nxt][1]) <= 0) {
                ans++;
                nxt = i;
            }
        }
        return ans;
    }

    private static int cmp(int h1, int m1, int h2, int m2) {
        return h1 != h2 ? h1 - h2 : m1 - m2;

    }

//    static class MyCmp implements Comparator<String> {
//        public int getDuration(String s) {
//            char[] s1 = s.substring(0, 5).toCharArray();
//            char[] s2 = s.substring(6, 11).toCharArray();
//            int h1 = (s1[0] - '0') * 10 + s1[1] - '0';
//            int m1 = (s1[3] - '0') * 10 + s1[4] - '0';
//            int h2 = (s2[0] - '0') * 10 + s2[1] - '0';
//            int m2 = (s2[3] - '0') * 10 + s2[4] - '0';
//            return Math.max(0, (h2 - h1) * 60 + (m2 - m1));
//        }
//
//        @Override
//        public int compare(String o1, String o2) {
//            String str1 = o1.substring(0, 5);
//            String str2 = o2.substring(0, 5);
//            if (str1.equals(str2)) {
//                int d1 = getDuration(o1);
//                int d2 = getDuration(o2);
//                return d1 - d2;
//            } else {
//                return o1.compareTo(o2);
//            }
//        }
//    }
}
